package aceim.api; import aceim.api.dataentity.FileMessage; import aceim.api.dataentity.ItemAction; import aceim.api.dataentity.ProtocolServiceFeature; import aceim.api.dataentity.ServiceMessage; import aceim.api.service.ApiConstants; import aceim.api.utils.Utils; /** * An interface to receive requests from core. */ public interface IProtocol { /** * Personal info request. See {@link ICoreService#personalInfo(aceim.api.dataentity.PersonalInfo, boolean)} for result callback. * @param uid UID of buddy or account to request info for. * @param shortInfo request only name (+ short description, optionally), is set to true. */ public void requestFullInfo(java.lang.String uid, boolean shortInfo); /** * Buddy action (adding, editing or renaming, removing) request. * Despite of {@link ItemAction#JOINED} and {@link ItemAction#LEFT} actions, cannot be used for multi-user chat specific actions. Use {@link IProtocol#joinChatRoom(String, boolean)} and {@link IProtocol#leaveChatRoom(String)} methods for these cases. * @param action an action to take * @param buddy target buddy */ public void buddyAction(aceim.api.dataentity.ItemAction action, aceim.api.dataentity.Buddy buddy); /** * Group action (adding, editing or renaming, removing) request. * @param action an action to take * @param group target group */ public void buddyGroupAction(aceim.api.dataentity.ItemAction action, aceim.api.dataentity.BuddyGroup group); /** * {@link ProtocolServiceFeature} setting request. Predefined features IDs, such as status, extended status, can be found in {@link ApiConstants} * @param featureId ID of the feature to be processed within info container * @param info features container (contains target buddy/account UID as well). */ public void setFeature(java.lang.String featureId, aceim.api.dataentity.OnlineInfo info); /** * Disconnection request. */ public void disconnect(); /** * Connection request. * @param info a info to enter network with (if required by protocol). */ public void connect(aceim.api.dataentity.OnlineInfo info); /** * Message sending request. Should be implemented synchronized, because of message ID definition. * @param message a message to send * @return message ID (managed by either protocol server or protocol plugin implementation) */ public long sendMessage(aceim.api.dataentity.Message message); /** * Icon request. Asynchronized. See {@link ICoreService#iconBitmap(String, byte[], String)} for callback. * @param ownerUid buddy/account UID to get icon for. */ public void requestIcon(java.lang.String ownerUid); /** * Response for message (actually for message types that require response, like {@link ServiceMessage} or {@link FileMessage}). * @param message message to respond * @param accept answer */ public void messageResponse(aceim.api.dataentity.Message message, boolean accept); /** * File transfer cancel request. * @param messageId ID of file transfer to cancel */ public void cancelFileFransfer(long messageId); /** * Typing notification sending request. * @param ownerUid target buddy's UID to send notification to */ public void sendTypingNotification(java.lang.String ownerUid); /** * Join chat room request. Makes sense only with protocols that support multi-user chats. * @param chatId chat room UID to join * @param loadOccupantsIcons should chat occupants' icons be loaded or not (aimed to reduce network usage) */ public void joinChatRoom(java.lang.String chatId, boolean loadOccupantsIcons); /** * Leave chat room request. Makes sense only with protocols that support multi-user chats. * @param chatId chat room UID to leave */ public void leaveChatRoom(java.lang.String chatId); /** * Upload account icon request. Also {@link Utils#scaleAccountIcon(String, int)} may be used to resize icon. * @param filePath local file system path to the photo that should be uploaded. */ public void uploadAccountPhoto(java.lang.String filePath); /** * Account icon removal request. */ public void removeAccountPhoto(); //public void getChatRooms(); }